#ifndef TRANSACTION_HH
#define TRANSACTION_HH
#include <string>
#include <ctime>

class Transaction {
private:
    std::string transactionId;
    std::string sourceAccountId;
    std::string destinationAccountId;
    double amount;
    std::string type;  // "DEPOSIT", "WITHDRAW", "TRANSFER"
    std::string note;
    std::time_t timestamp;

public:
    Transaction(const std::string& srcAccId, 
               const std::string& destAccId, 
               double amt, 
               const std::string& transType,
               const std::string& noteText = "");
    
    std::string getTransactionId() const { return transactionId; }
    std::string getSourceAccountId() const { return sourceAccountId; }
    std::string getDestinationAccountId() const { return destinationAccountId; }
    double getAmount() const { return amount; }
    std::string getType() const { return type; }
    std::string getNote() const { return note; }
    std::time_t getTimestamp() const { return timestamp; }
    
    static std::string generateTransactionId();
};

#endif